From: robertl Date: Fri, 20 Nov 2009 15:54:21 +0000 (+0000) Subject: Add NET_TIME to csv for handling MS .net times. X-Git-Tag: archive/raspbian/1.10.0+ds-2+rpi1~1^2~199^2~106 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=1c2daa5aca1b48e89521b65de754c19eb568add4;p=gpsbabel.git Add NET_TIME to csv for handling MS .net times. --- diff --git a/csv_util.c b/csv_util.c index bd12e7581..3d3ce6a76 100644 --- a/csv_util.c +++ b/csv_util.c @@ -108,6 +108,7 @@ typedef enum { XT_LON_NMEA, XT_MAP_EN_BNG, XT_NOTES, + XT_NET_TIME, XT_PATH_COURSE, XT_PATH_DISTANCE_KM, XT_PATH_DISTANCE_MILES, @@ -1096,6 +1097,9 @@ xcsv_parse_val(const char *s, waypoint *wpt, const field_map_t *fmp, case XT_ISO_TIME_MS: wpt->creation_time = xml_parse_time(s, &wpt->microseconds); break; + case XT_NET_TIME: + dotnet_time_to_time_t(atof(s), &wpt->creation_time, &wpt->microseconds); + break; case XT_GEOCACHE_LAST_FOUND: waypt_alloc_gc_data(wpt)->last_found = yyyymmdd_to_time(s); break; diff --git a/defs.h b/defs.h index 89a245599..0c15fa127 100644 --- a/defs.h +++ b/defs.h @@ -844,6 +844,7 @@ signed int get_tz_offset(void); time_t mklocaltime(struct tm *t); time_t mkgmtime(struct tm *t); time_t current_time(void); +void dotnet_time_to_time_t(double dotnet, time_t *t, int *ms); signed int month_lookup(const char *m); const char *get_cache_icon(const waypoint *waypointp); const char *gs_get_cachetype(geocache_type t); diff --git a/util.c b/util.c index 0054c2324..7c0c18e6b 100644 --- a/util.c +++ b/util.c @@ -911,6 +911,25 @@ month_lookup(const char *m) return -1; } +/* + * Microsoft dot net's time format is the number of 100 nanosecond intervals + * since midnight Jan 1, 0001. We have time_t deeply ingrained into our + * internals and since we're in the GPS biz, timestamps before 1/1/1970 aren't + * that interesting to us anyway. + */ +#define EPOCH_TICKS 621355968000000000.0 +void dotnet_time_to_time_t(double dotnet, time_t *t, int *ms) +{ + *t = (dotnet - EPOCH_TICKS) / 10000000.; +#if LATER + // TODO: work out fractional seconds. + if (ms) { + *ms = dotnet % 10000; + } +#endif +} + + /* * Return a pointer to a constant string that is suitable for icon lookup * based on geocache attributes. The strings used are those present in diff --git a/xcsv_tokens.gperf b/xcsv_tokens.gperf index b3991129d..4cb3f4871 100644 --- a/xcsv_tokens.gperf +++ b/xcsv_tokens.gperf @@ -1,4 +1,4 @@ -/* ANSI-C code produced by gperf version 3.0.1 */ +/* ANSI-C code produced by gperf version 3.0.3 */ /* Command-line: gperf -L ANSI-C -D -t xcsv_tokens.in */ /* Computed positions: -k'2,4-5,12,$' */ @@ -32,12 +32,12 @@ #line 1 "xcsv_tokens.in" struct xt_mapping {char *name; int xt_token; }; -#define TOTAL_KEYWORDS 74 +#define TOTAL_KEYWORDS 75 #define MIN_WORD_LENGTH 3 #define MAX_WORD_LENGTH 21 -#define MIN_HASH_VALUE 7 -#define MAX_HASH_VALUE 153 -/* maximum key range = 147, duplicates = 0 */ +#define MIN_HASH_VALUE 5 +#define MAX_HASH_VALUE 185 +/* maximum key range = 181, duplicates = 0 */ #ifdef __GNUC__ __inline @@ -51,32 +51,32 @@ hash (register const char *str, register unsigned int len) { static unsigned char asso_values[] = { - 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, - 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, - 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, - 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, - 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, - 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, - 154, 154, 154, 154, 154, 0, 154, 0, 0, 10, - 55, 15, 50, 35, 154, 10, 40, 20, 0, 25, - 25, 154, 0, 40, 15, 154, 20, 0, 25, 45, - 154, 154, 154, 154, 154, 0, 154, 154, 154, 154, - 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, - 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, - 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, - 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, - 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, - 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, - 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, - 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, - 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, - 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, - 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, - 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, - 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, - 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, - 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, - 154, 154, 154, 154, 154, 154 + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 0, 186, 0, 0, 0, + 70, 0, 30, 45, 186, 30, 50, 35, 5, 15, + 25, 186, 0, 70, 0, 186, 0, 5, 30, 25, + 186, 186, 186, 186, 186, 20, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186 }; register int hval = len; @@ -107,175 +107,183 @@ hash (register const char *str, register unsigned int len) #ifdef __GNUC__ __inline +#ifdef __GNUC_STDC_INLINE__ +__attribute__ ((__gnu_inline__)) +#endif #endif struct xt_mapping * in_word_set (register const char *str, register unsigned int len) { static struct xt_mapping wordlist[] = { +#line 70 "xcsv_tokens.in" + {"STATE", XT_STATE}, +#line 30 "xcsv_tokens.in" + {"HEART_RATE", XT_HEART_RATE}, +#line 71 "xcsv_tokens.in" + {"STREET_ADDR", XT_STREET_ADDR}, +#line 6 "xcsv_tokens.in" + {"CADENCE", XT_CADENCE}, +#line 22 "xcsv_tokens.in" + {"GEOCACHE_TERR", XT_GEOCACHE_TERR}, +#line 21 "xcsv_tokens.in" + {"GEOCACHE_PLACER", XT_GEOCACHE_PLACER}, +#line 10 "xcsv_tokens.in" + {"DESCRIPTION", XT_DESCRIPTION}, +#line 5 "xcsv_tokens.in" + {"ANYNAME", XT_ANYNAME}, +#line 17 "xcsv_tokens.in" + {"GEOCACHE_HINT", XT_GEOCACHE_HINT}, +#line 18 "xcsv_tokens.in" + {"GEOCACHE_ISARCHIVED", XT_GEOCACHE_ISARCHIVED}, +#line 19 "xcsv_tokens.in" + {"GEOCACHE_ISAVAILABLE", XT_GEOCACHE_ISAVAILABLE}, +#line 34 "xcsv_tokens.in" + {"IGNORE", XT_IGNORE}, +#line 15 "xcsv_tokens.in" + {"GEOCACHE_CONTAINER", XT_GEOCACHE_CONTAINER}, +#line 68 "xcsv_tokens.in" + {"ROUTE_NAME", XT_ROUTE_NAME}, +#line 67 "xcsv_tokens.in" + {"POSTAL_CODE", XT_POSTAL_CODE}, #line 41 "xcsv_tokens.in" {"LAT_DIR", XT_LAT_DIR}, -#line 46 "xcsv_tokens.in" - {"LAT_NMEA", XT_LAT_NMEA}, -#line 33 "xcsv_tokens.in" - {"ICON_DESCR", XT_ICON_DESCR}, +#line 58 "xcsv_tokens.in" + {"NET_TIME", XT_NET_TIME}, +#line 56 "xcsv_tokens.in" + {"MAP_EN_BNG", XT_MAP_EN_BNG}, #line 45 "xcsv_tokens.in" {"LAT_DDMMDIR", XT_LAT_DDMMDIR}, +#line 46 "xcsv_tokens.in" + {"LAT_NMEA", XT_LAT_NMEA}, #line 38 "xcsv_tokens.in" {"LAT_DECIMALDIR", XT_LAT_DECIMALDIR}, -#line 5 "xcsv_tokens.in" - {"ANYNAME", XT_ANYNAME}, +#line 33 "xcsv_tokens.in" + {"ICON_DESCR", XT_ICON_DESCR}, +#line 23 "xcsv_tokens.in" + {"GEOCACHE_TYPE", XT_GEOCACHE_TYPE}, +#line 69 "xcsv_tokens.in" + {"SHORTNAME", XT_SHORTNAME}, #line 73 "xcsv_tokens.in" - {"TRACK_NEW", XT_TRACK_NEW}, -#line 10 "xcsv_tokens.in" - {"DESCRIPTION", XT_DESCRIPTION}, -#line 22 "xcsv_tokens.in" - {"GEOCACHE_TERR", XT_GEOCACHE_TERR}, -#line 21 "xcsv_tokens.in" - {"GEOCACHE_PLACER", XT_GEOCACHE_PLACER}, -#line 6 "xcsv_tokens.in" - {"CADENCE", XT_CADENCE}, -#line 15 "xcsv_tokens.in" - {"GEOCACHE_CONTAINER", XT_GEOCACHE_CONTAINER}, -#line 18 "xcsv_tokens.in" - {"GEOCACHE_ISARCHIVED", XT_GEOCACHE_ISARCHIVED}, -#line 72 "xcsv_tokens.in" {"TRACK_NAME", XT_TRACK_NAME}, #line 51 "xcsv_tokens.in" {"LON_DIR", XT_LON_DIR}, -#line 55 "xcsv_tokens.in" - {"LON_NMEA", XT_LON_NMEA}, -#line 56 "xcsv_tokens.in" - {"MAP_EN_BNG", XT_MAP_EN_BNG}, +#line 66 "xcsv_tokens.in" + {"PHONE_NR", XT_PHONE_NR}, +#line 74 "xcsv_tokens.in" + {"TRACK_NEW", XT_TRACK_NEW}, #line 54 "xcsv_tokens.in" {"LON_DDMMDIR", XT_LON_DDMMDIR}, -#line 17 "xcsv_tokens.in" - {"GEOCACHE_HINT", XT_GEOCACHE_HINT}, +#line 55 "xcsv_tokens.in" + {"LON_NMEA", XT_LON_NMEA}, #line 48 "xcsv_tokens.in" {"LON_DECIMALDIR", XT_LON_DECIMALDIR}, -#line 19 "xcsv_tokens.in" - {"GEOCACHE_ISAVAILABLE", XT_GEOCACHE_ISAVAILABLE}, -#line 75 "xcsv_tokens.in" +#line 9 "xcsv_tokens.in" + {"COUNTRY", XT_COUNTRY}, +#line 76 "xcsv_tokens.in" {"URL", XT_URL}, -#line 30 "xcsv_tokens.in" - {"HEART_RATE", XT_HEART_RATE}, -#line 70 "xcsv_tokens.in" - {"STREET_ADDR", XT_STREET_ADDR}, -#line 39 "xcsv_tokens.in" - {"LAT_DECIMAL", XT_LAT_DECIMAL}, +#line 72 "xcsv_tokens.in" + {"TIMET_TIME", XT_TIMET_TIME}, +#line 14 "xcsv_tokens.in" + {"FORMAT", XT_FORMAT}, +#line 13 "xcsv_tokens.in" + {"FILENAME", XT_FILENAME}, +#line 65 "xcsv_tokens.in" + {"PATH_SPEED", XT_PATH_SPEED}, +#line 59 "xcsv_tokens.in" + {"PATH_COURSE", XT_PATH_COURSE}, #line 24 "xcsv_tokens.in" {"GMT_TIME", XT_GMT_TIME}, #line 31 "xcsv_tokens.in" {"HMSG_TIME", XT_HMSG_TIME}, -#line 69 "xcsv_tokens.in" - {"STATE", XT_STATE}, -#line 34 "xcsv_tokens.in" - {"IGNORE", XT_IGNORE}, -#line 23 "xcsv_tokens.in" - {"GEOCACHE_TYPE", XT_GEOCACHE_TYPE}, -#line 64 "xcsv_tokens.in" - {"PATH_SPEED", XT_PATH_SPEED}, -#line 66 "xcsv_tokens.in" - {"POSTAL_CODE", XT_POSTAL_CODE}, -#line 13 "xcsv_tokens.in" - {"FILENAME", XT_FILENAME}, +#line 42 "xcsv_tokens.in" + {"LAT_HUMAN_READABLE", XT_LAT_HUMAN_READABLE}, #line 35 "xcsv_tokens.in" {"INDEX", XT_INDEX}, -#line 14 "xcsv_tokens.in" - {"FORMAT", XT_FORMAT}, -#line 65 "xcsv_tokens.in" - {"PHONE_NR", XT_PHONE_NR}, -#line 20 "xcsv_tokens.in" - {"GEOCACHE_LAST_FOUND", XT_GEOCACHE_LAST_FOUND}, -#line 67 "xcsv_tokens.in" - {"ROUTE_NAME", XT_ROUTE_NAME}, -#line 58 "xcsv_tokens.in" - {"PATH_COURSE", XT_PATH_COURSE}, -#line 37 "xcsv_tokens.in" - {"ISO_TIME", XT_ISO_TIME}, -#line 40 "xcsv_tokens.in" - {"LAT_DIRDECIMAL", XT_LAT_DIRDECIMAL}, -#line 49 "xcsv_tokens.in" - {"LON_DECIMAL", XT_LON_DECIMAL}, +#line 47 "xcsv_tokens.in" + {"LOCAL_TIME", XT_LOCAL_TIME}, #line 43 "xcsv_tokens.in" {"LAT_INT32DEG", XT_LAT_INT32DEG}, #line 29 "xcsv_tokens.in" {"GPS_VDOP", XT_GPS_VDOP}, -#line 32 "xcsv_tokens.in" - {"HMSL_TIME", XT_HMSL_TIME}, -#line 71 "xcsv_tokens.in" - {"TIMET_TIME", XT_TIMET_TIME}, -#line 27 "xcsv_tokens.in" - {"GPS_PDOP", XT_GPS_PDOP}, -#line 68 "xcsv_tokens.in" - {"SHORTNAME", XT_SHORTNAME}, -#line 47 "xcsv_tokens.in" - {"LOCAL_TIME", XT_LOCAL_TIME}, -#line 59 "xcsv_tokens.in" - {"PATH_DISTANCE_KM", XT_PATH_DISTANCE_KM}, -#line 28 "xcsv_tokens.in" - {"GPS_SAT", XT_GPS_SAT}, -#line 42 "xcsv_tokens.in" - {"LAT_HUMAN_READABLE", XT_LAT_HUMAN_READABLE}, -#line 9 "xcsv_tokens.in" - {"COUNTRY", XT_COUNTRY}, -#line 74 "xcsv_tokens.in" - {"URL_LINK_TEXT", XT_URL_LINK_TEXT}, +#line 39 "xcsv_tokens.in" + {"LAT_DECIMAL", XT_LAT_DECIMAL}, +#line 52 "xcsv_tokens.in" + {"LON_HUMAN_READABLE", XT_LON_HUMAN_READABLE}, +#line 20 "xcsv_tokens.in" + {"GEOCACHE_LAST_FOUND", XT_GEOCACHE_LAST_FOUND}, #line 11 "xcsv_tokens.in" {"EXCEL_TIME", XT_EXCEL_TIME}, #line 44 "xcsv_tokens.in" {"LATLON_HUMAN_READABLE", XT_LATLON_HUMAN_READABLE}, -#line 50 "xcsv_tokens.in" - {"LON_DIRDECIMAL", XT_LON_DIRDECIMAL}, #line 53 "xcsv_tokens.in" {"LON_INT32DEG", XT_LON_INT32DEG}, #line 8 "xcsv_tokens.in" {"CONSTANT", XT_CONSTANT}, -#line 36 "xcsv_tokens.in" - {"ISO_TIME_MS", XT_ISO_TIME_MS}, +#line 49 "xcsv_tokens.in" + {"LON_DECIMAL", XT_LON_DECIMAL}, +#line 37 "xcsv_tokens.in" + {"ISO_TIME", XT_ISO_TIME}, +#line 7 "xcsv_tokens.in" + {"CITY", XT_CITY}, +#line 60 "xcsv_tokens.in" + {"PATH_DISTANCE_KM", XT_PATH_DISTANCE_KM}, +#line 27 "xcsv_tokens.in" + {"GPS_PDOP", XT_GPS_PDOP}, #line 26 "xcsv_tokens.in" {"GPS_HDOP", XT_GPS_HDOP}, -#line 60 "xcsv_tokens.in" - {"PATH_DISTANCE_MILES", XT_PATH_DISTANCE_MILES}, -#line 4 "xcsv_tokens.in" - {"ALT_METERS", XT_ALT_METERS}, -#line 25 "xcsv_tokens.in" - {"GPS_FIX", XT_GPS_FIX}, -#line 52 "xcsv_tokens.in" - {"LON_HUMAN_READABLE", XT_LON_HUMAN_READABLE}, +#line 75 "xcsv_tokens.in" + {"URL_LINK_TEXT", XT_URL_LINK_TEXT}, +#line 32 "xcsv_tokens.in" + {"HMSL_TIME", XT_HMSL_TIME}, +#line 40 "xcsv_tokens.in" + {"LAT_DIRDECIMAL", XT_LAT_DIRDECIMAL}, +#line 28 "xcsv_tokens.in" + {"GPS_SAT", XT_GPS_SAT}, +#line 63 "xcsv_tokens.in" + {"PATH_SPEED_KPH", XT_PATH_SPEED_KPH}, +#line 12 "xcsv_tokens.in" + {"FACILITY", XT_FACILITY}, +#line 64 "xcsv_tokens.in" + {"PATH_SPEED_MPH", XT_PATH_SPEED_MPH}, +#line 77 "xcsv_tokens.in" + {"YYYYMMDD_TIME", XT_YYYYMMDD_TIME}, +#line 50 "xcsv_tokens.in" + {"LON_DIRDECIMAL", XT_LON_DIRDECIMAL}, #line 61 "xcsv_tokens.in" - {"PATH_SPEED_KNOTS", XT_PATH_SPEED_KNOTS}, + {"PATH_DISTANCE_MILES", XT_PATH_DISTANCE_MILES}, #line 3 "xcsv_tokens.in" {"ALT_FEET", XT_ALT_FEET}, +#line 25 "xcsv_tokens.in" + {"GPS_FIX", XT_GPS_FIX}, +#line 16 "xcsv_tokens.in" + {"GEOCACHE_DIFF", XT_GEOCACHE_DIFF}, #line 57 "xcsv_tokens.in" {"NOTES", XT_NOTES}, #line 62 "xcsv_tokens.in" - {"PATH_SPEED_KPH", XT_PATH_SPEED_KPH}, -#line 12 "xcsv_tokens.in" - {"FACILITY", XT_FACILITY}, -#line 7 "xcsv_tokens.in" - {"CITY", XT_CITY}, -#line 16 "xcsv_tokens.in" - {"GEOCACHE_DIFF", XT_GEOCACHE_DIFF}, -#line 63 "xcsv_tokens.in" - {"PATH_SPEED_MPH", XT_PATH_SPEED_MPH}, -#line 76 "xcsv_tokens.in" - {"YYYYMMDD_TIME", XT_YYYYMMDD_TIME} + {"PATH_SPEED_KNOTS", XT_PATH_SPEED_KNOTS}, +#line 36 "xcsv_tokens.in" + {"ISO_TIME_MS", XT_ISO_TIME_MS}, +#line 4 "xcsv_tokens.in" + {"ALT_METERS", XT_ALT_METERS} }; static signed char lookup[] = { - -1, -1, -1, -1, -1, -1, -1, 0, 1, -1, 2, 3, -1, -1, - 4, -1, -1, 5, -1, 6, -1, 7, -1, 8, -1, 9, -1, 10, - 11, 12, 13, -1, 14, 15, -1, 16, 17, -1, 18, 19, 20, -1, - -1, 21, -1, 22, 23, -1, -1, -1, -1, 24, -1, 25, 26, 27, - 28, -1, 29, -1, 30, 31, -1, 32, -1, 33, 34, -1, 35, 36, - 37, 38, -1, 39, 40, -1, 41, 42, 43, 44, 45, -1, -1, 46, - 47, 48, 49, 50, 51, -1, -1, -1, 52, 53, -1, 54, 55, -1, - -1, 56, -1, -1, 57, 58, -1, -1, 59, -1, 60, 61, 62, -1, - 63, 64, -1, -1, 65, -1, 66, -1, 67, -1, -1, -1, 68, -1, - -1, -1, 69, 70, -1, -1, -1, 71, 72, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 73 + -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 1, 2, 3, 4, + -1, 5, 6, 7, 8, 9, 10, 11, -1, 12, -1, 13, 14, 15, + 16, -1, 17, 18, -1, 19, 20, 21, -1, -1, 22, 23, 24, -1, + 25, 26, 27, -1, 28, -1, 29, 30, -1, -1, 31, 32, -1, 33, + 34, -1, 35, -1, 36, 37, -1, 38, 39, -1, -1, -1, 40, -1, + 41, -1, -1, -1, -1, 42, -1, 43, 44, -1, -1, 45, -1, 46, + -1, -1, -1, -1, -1, 47, 48, 49, 50, 51, -1, -1, 52, -1, + 53, 54, -1, 55, -1, 56, -1, -1, -1, -1, 57, -1, -1, -1, + -1, 58, 59, -1, -1, -1, -1, 60, -1, -1, 61, -1, 62, -1, + -1, -1, 63, 64, -1, -1, -1, 65, 66, -1, -1, -1, -1, 67, + -1, -1, -1, -1, -1, -1, -1, -1, 68, -1, -1, -1, 69, 70, + -1, -1, -1, -1, -1, -1, 71, -1, -1, -1, -1, -1, 72, -1, + -1, -1, -1, 73, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 74 }; if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) diff --git a/xcsv_tokens.in b/xcsv_tokens.in index c0c106e7a..3d7f1013c 100644 --- a/xcsv_tokens.in +++ b/xcsv_tokens.in @@ -55,6 +55,7 @@ LON_DDMMDIR, XT_LON_DDMMDIR LON_NMEA, XT_LON_NMEA MAP_EN_BNG, XT_MAP_EN_BNG NOTES, XT_NOTES +NET_TIME, XT_NET_TIME PATH_COURSE, XT_PATH_COURSE PATH_DISTANCE_KM, XT_PATH_DISTANCE_KM PATH_DISTANCE_MILES, XT_PATH_DISTANCE_MILES diff --git a/xmldoc/chapters/styles.xml b/xmldoc/chapters/styles.xml index 187bd5afb..26f9c4937 100644 --- a/xmldoc/chapters/styles.xml +++ b/xmldoc/chapters/styles.xml @@ -948,6 +948,20 @@ example: +
+NET_TIME + + Microsoft dot net represents times in 100 nanoscond intervals since midnight + Jan 1/0001 GMT, giving absurdly large numbers like 633943150010000000 for + mid-November, 2009. NET_TIME is how to represent those in GPSBabel. + + +example: + + IFIELD NET_TIME,"","%f" + +
+
GEOCACHE_DIFF